Chapter 9
systemd
- systemctl status 預設看 service unit,所以這類的物件不加.service結尾是可以的,但如 socket 之類的就不行了,一定要打上完整的 unit 名稱
- 某些重要的 static daemon 是無法自行啟動或停止的,大多是系統內重要的服務
- 單純執行 systemctl 可以顯示所有的 unit 的 status,但不包括 inactive 的
- 加 -l就可以顯示完整的文字
- systemctl is-active sshd、systemctl is-enabled sshd,好用的觀察指令
- systemctl 預設的 SubCommand 是 list-units
- systemctl restart 會把 daemon 的 PID 改變,但 reload 不會,reload 不一定會成功,restart比較穩
- systemctl list-dependencies graphical.target | grep target
- mask 是無法被手動或自動啟用的,disabled 則可以,所以兩個還是不太一樣,如果要確保 service 不會被意外啟用,就使用 mask
- mask 其實是建 /dev/null 到設定檔
ssh
- 對稱式加密:演算法較簡單,強度較強,但使用較麻煩,適合用在大量訊息加密
- 非對稱式加密:演算法較複雜,強度較弱,同時產生出公開金鑰與私有金鑰,建議使用較長bit的加密法,但不適合用在大量訊息加密,因為演算法跟加密法複雜,會增加主機的 loading
- SSH Server 的公開金鑰放在 /etc/ssh/key
- 每一次 ssh 都會下載金鑰,只是第二次以後不會再問你要不要存,但實際上每次都下載
- ssh 的密碼登入就是對稱式加密、私有金鑰登入則是非對稱式登入
- ssh-keygen 的 passphrase 是一種通關密語,防止私有金鑰外流時被登入,但登入時每次都得輸入通關密語
- 承上,可以使用 ssh-agent 來管理通關密語,這樣又可以不用自行輸入了,不然每次都要輸入通關密語(而不是密碼)
- 再使用 ssh-copy-id 可以將公開金鑰複製到 remote 端,不過這次當然要密碼登入
- ssh-copy-id -i ~/.ssh/id_rsa.pub root@serverX.example.com
- -i 的意思為指定 key 的路徑,上傳後,金鑰會存在 remote 的 ~/.ssh/authorized.keys 裡
- /etc/ssh/sshd_config:ssh server 端的設定、/etc/ssh/ssh_config:ssh client 端的設定
# 必考的選項
/etc/ssh/sshd_config:PermitRootLogin
/etc/ssh/sshd_config:PasswordAuthentication
# 啟用 agent 的指令,可以玩玩看
$ ssh-agent bash
$ ssh-add
Chapter 10
- log 一定要有 Facility,Serverity 的值也一定要有,其值有一個公開標準 (0 ~ 7)
- 設定檔盡量放在 xxx.d/*.conf 裡比較好,不會被覆蓋掉,不然原本的 conf 容易被更新覆蓋
- rsyslog 的 manual.html 檔可以去看一下!
journalctl --since "2014-0210 20:30:00" --until "2014-0213 12:00"
# 有點廢,但會考的指令!
$ journalctl -b # 看這次開機的log
$ journalctl -b 1 # 看上次開機的log
$ journalctl -b 2 # 看上上次開機的log
- RTC hardware 時間會以世界協調標準時間,local 的時間再去加減
- NTP server 的設定建議加上 iburst指令,p248
- hwclock -w 立即設定硬體的時間
- timedatectl 最好回家練習一下! p252
Chapter 11
- 做好 default gateway 設定,就可以拿到 default route p261
- eth0 eth1 這些名稱是不固定的,rhel7之 後,改用 enpxx enoxx 這種固定的名稱 p262
必考下列網路設定
- IP address - ping
- Subnet Mask - traceroute
- Default gateway - SS
- DNS Server - nslookup
- use ss instead netstat
NetworkManager.service:
-
nm-connection-editor (GUI)
-
nmcli (Command Line Utility)
-
/etc/sysconfig/network-script/ifcfg-*
-
nmcli connection add 時,dns 一定要在之後用 modify 改,add 時不能改!
-
建議一個 interface 設 auto connect 就好
-
hostname 指令可以看,也可以暫時的改 hostname
-
如果沒有設定 hostname,Linux 會先去 dns 詢問 ip 是否有對應的 hostname,因此常常不用設定也可以有 hostname,但那是暫時的
-
名稱解析:/etc/hosts./etc/resolv.conf
-
/etc/resolv.conf 不建議直接修改,因為網路組態改過後就會被更動,因此不適合做永遠的設定,建議直接在網路組態裡修改
-
getenv 可以拿來抓設定檔裡的內容
-
host 指令會避開 host file 檔案,直接去 dns server 裡查
-
p283 底下的 important 要看!
Chapter 12
tar and rsync
- tar 會直接覆寫現在資料夾中的同名檔案,所以建立時一定要注意目錄中有沒有同名檔案!
- 檔案如果沒有 r 的權限,或目錄沒有 rx 權限是無法打包的
- Tar 預設不打包 SELinux 的屬性跟 ACL,要包的話需要延伸選項 –xattrs
- 解包前最好去空目錄解
- 只有 root 解包時可以保留檔案原本的屬性,一般使用者解開後就是他自己的,無法保留使用者屬性,但權限可保留
- 一般使用者解檔案時,會被 umask 的權限影響,如果要保留原本的權限,要加選項 p,所以打包時其實有保留原本的權限
- 解壓縮時可以不用加上 x j J的 選項,因為系統已經認得該壓縮檔是哪一種壓縮方式
- scp 無法保留檔案權限(除非加選項?)
- 執行 rsync 前最好先用 -n 的 dry run 測試一遍比較安全
- rsync -a 無法同步 hard link,要同步 hard link 要加上 -H 的選項;也無法同步 ACL 跟 SELinux,如果要同步 ACL要加 -A, 要同步 SELinux 要加 -X
- rsync 的目錄有 / 或沒有 / 差很多,如果只要同步 source 裡面的內容,source 的目錄最後要加 /,最後會把檔案直接複製到 local 資料夾裡,不會另外新建 remote 的目錄,p305 一定要再看一次!
Chapter 13
- rpm 檔名中的 noarch 表示不 care 64 or 32 位元
- rpm 安裝時驗證的公開金鑰放在 /etc/pki/rpm-gpg
自訂 yum 容器設定檔: /etc/yum.repos.d/*.repo
[repo_id]
name=
baseurl=
yum repolist
yum clean all # 可以清掉 yum download 下的 cache 檔
yum (向 yum server 發出 request)
# 查詢
yum list
yum search
yum info # 以上三個後面都跟套件名稱
yum provides $command name
yum groups list
yum groups info
yum history
yum history info
yum history undo
yum list yum* # 列出 yum 開頭的套件,前面有 @ 符號代表可安裝
yum search "web server" # 查有無相關的套件,只有 metadata
yum search all "web server" # 找更多,包括名稱、簡介、描述檔
yum group list hidden # 顯示所有套件
yum group list id # 顯示套件的 id
yum history undo $number # undo 還是會問 yes/no
# 安裝
yum -y install
yum -y groupinstall
yum install --no-gpg-check
# yum install 如果用 -d 會 download 到本機,套件會放在 /var/cache/yum/XXX中
# 更新
yum -y update
# 移除
yum -y remove
# kernel 更新
yum update kernel
yum list kernel
rpm(查詢已安裝套件或套件安裝檔)
# 查詢
# 主要查詢已安裝套件名稱
rpm -qa
rpm -ql
rpm -qi
rpm -qd(找文件)
rpm -qc(找conf)
rpm -qp --scripts
rpm -qp --changlog
rpm -qf
# 主要查詢套件安裝檔名
rpm -qpl
rpm -qpi
rpm -qpd
rpm -qpc
rpm -qp --scripts
rpm -qp --changlog
yum localinstall
# 安裝
yum localinstall
rpm -ivh
# 更新
rpm -Uvh
# 移除
rpm -e
yum repolist 預設只 show enableyum repolist all 全show
yum-config-manager –enable rhel-dvd
yum-config-manager –add-repo=“http://dl.fedoraproject.org/pub/epel/xxx/"
*.repo 檔如果沒寫 enabled 的話,預設為 enabled=1gpgcheck = 0(取消 gpg 金鑰 check)
p343 rpm cpio 解包看檔案
Chapter 14
LVM
/dev/vgname/lvname
Physical Volume 1
Volume Group
Logical Volume
Partition 的管理
MBR:fdisk、fdisk -l
GPT:gdisk、gdisk -l
File System 的建立:mkfs
blkid
File System 的掛載:mount
df -h、du -h
du -h / –max-depth=1
- lsof /mount_point
hard link
- 只能建立在檔案上
- 不能跨 file system
Soft Link
- 建立 soft link 最好全部用絕對路徑
- 可建立在檔案與目錄上
- 可跨 File system
P368
p369找 hard link 大於1的檔案時,一定要指定 type 為 file,不然會列出所有子目錄,因為每個子目錄中都有個隱藏的. 資料夾